Redis Master-Slave Replication একটি পদ্ধতি যেখানে একটি Master সার্ভার ডেটা লেখার দায়িত্ব পালন করে, এবং এক বা একাধিক Slave সার্ভার তার ডেটা রিড (পড়ার) জন্য কপি করে। এটি মূলত ডেটা রেডান্ডেন্সি এবং লোড ব্যালেন্সিং নিশ্চিত করতে ব্যবহৃত হয়, কারণ একাধিক slave সার্ভার ক্লায়েন্টের রিড অনুরোধ হ্যান্ডেল করতে পারে, এবং master সার্ভার শুধু ডেটা লেখার কাজ করে।
রেডিসে Master-Slave Replication কনফিগার করার জন্য নিচে দেওয়া পদক্ষেপগুলো অনুসরণ করুন:
Redis Master-Slave Replication কনফিগারেশন
ধরা যাক, আপনার কাছে দুটি রেডিস সার্ভার রয়েছে:
- Master সার্ভার (যেখানে ডেটা লেখার কাজ হবে)
- Slave সার্ভার (যেখানে ডেটা পড়ার কাজ হবে)
ধাপ ১: Master সার্ভার কনফিগারেশন
Master সার্ভারে কোনো বিশেষ কনফিগারেশন পরিবর্তন করার প্রয়োজন নেই। ডিফল্টভাবে, রেডিস একটি Master সার্ভার হিসেবে কাজ করে।
redis.conf ফাইলটি এডিট করুন:
sudo nano /etc/redis/redis.confbind এবং protected-mode: আপনি নিশ্চিত করুন যে, bind এবং protected-mode ঠিকমতো কনফিগার করা আছে। সাধারণত, এটি রেডিস সার্ভারকে অন্যান্য সার্ভারের সাথে কানেক্ট হতে অনুমতি দেয়।
উদাহরণ:
bind 0.0.0.0 # অন্যান্য সার্ভার থেকে সংযোগ করার জন্য protected-mode no # প্রোটেক্টেড মোড বন্ধRedis সার্ভার রিস্টার্ট করুন: কনফিগারেশন পরিবর্তনের পর, রেডিস সার্ভার রিস্টার্ট করতে:
sudo systemctl restart redis
ধাপ ২: Slave সার্ভার কনফিগারেশন
redis.conf ফাইলটি এডিট করুন: এখন Slave সার্ভারে গিয়ে
redis.confফাইলটি এডিট করুন:sudo nano /etc/redis/redis.confMaster সার্ভারের IP এবং পোর্ট যোগ করুন: Slave সার্ভারে
replicaofপ্যারামিটার ব্যবহার করে Master সার্ভারের IP এবং পোর্ট নির্ধারণ করুন:replicaof <Master_IP> <Master_PORT>উদাহরণ:
replicaof 192.168.1.100 6379এখানে,
192.168.1.100হলো Master সার্ভারের IP এবং6379হলো ডিফল্ট পোর্ট।Redis সার্ভার রিস্টার্ট করুন: কনফিগারেশন পরিবর্তন করার পর, Slave সার্ভার রিস্টার্ট করুন:
sudo systemctl restart redis
ধাপ ৩: Master-Slave Replication পরীক্ষা করা
এখন, আপনি Master এবং Slave সার্ভারের মধ্যে replication সফলভাবে কনফিগার করেছেন। এটি পরীক্ষা করার জন্য নিচের পদক্ষেপগুলি অনুসরণ করুন:
Master সার্ভারে একটি কিপেয়ার সেট করুন:
redis-cli SET user:1 "John Doe"Slave সার্ভারে একই কিপেয়ার চেক করুন: Slave সার্ভারে গিয়ে আপনি
GETকমান্ড ব্যবহার করেuser:1কিপেয়ারটি দেখতে পারেন:redis-cli GET user:1এর উত্তর হবে:
"John Doe"এটি দেখাবে যে, Master সার্ভারের ডেটা Slave সার্ভারে সঠিকভাবে replicate হয়েছে।
ধাপ ৪: Replication কনফিগারেশন যাচাই করা
Replication সফলভাবে কনফিগার হয়েছে কিনা তা যাচাই করতে আপনি INFO replication কমান্ড ব্যবহার করতে পারেন।
Master সার্ভারে INFO replication: Master সার্ভারে এই কমান্ডটি চালান:
redis-cli INFO replicationআউটপুট কিছুটা এই রকম হতে পারে:
# Replication role:master connected_slaves:1 slave0:ip=192.168.1.101,port=6379,state=online,offset=1083,lag=0এটি দেখাবে যে, Master সার্ভারে একটি Slave সার্ভার সংযুক্ত আছে এবং এর role হচ্ছে
master।Slave সার্ভারে INFO replication: Slave সার্ভারে একই কমান্ডটি চালান:
redis-cli INFO replicationআউটপুট হবে:
# Replication role:slave master_host:192.168.1.100 master_port:6379 master_link_status:up master_sync_in_progress:0এটি দেখাবে যে, Slave সার্ভারে role হচ্ছে
slaveএবং এটি Master সার্ভারের সাথে সংযুক্ত আছে।
ধাপ ৫: Master-Slave Replication এর অন্যান্য প্যারামিটার
Slave Read/Write (SLAVEOF NO ONE): যদি আপনি চান যে, Slave সার্ভার লেখার জন্যও ব্যবহৃত হোক, তাহলে
SLAVEOF NO ONEকমান্ড দিয়ে এটি Master সার্ভারের থেকে স্বাধীনভাবে কাজ করতে পারে।SLAVEOF NO ONEনির্দিষ্ট পাসওয়ার্ডের সাথে সংযোগ: যদি আপনার রেডিস সার্ভারে পাসওয়ার্ড সেট করা থাকে, তবে Slave সার্ভার কনফিগারেশনে
masterauthপ্যারামিটার ব্যবহার করতে হবে:masterauth <password>
সারাংশ
- Master-Slave Replication কনফিগার করার জন্য প্রথমে Master সার্ভারে কোন বিশেষ কনফিগারেশন পরিবর্তন করার প্রয়োজন নেই, তবে Slave সার্ভারে
replicaofপ্যারামিটার দিয়ে Master সার্ভারের IP এবং পোর্ট নির্ধারণ করতে হবে। - রেডিস Master-Slave Replication ব্যবহারের মাধ্যমে আপনি ডেটা রেডান্ডেন্সি এবং লোড ব্যালেন্সিং নিশ্চিত করতে পারেন।
- INFO replication কমান্ড ব্যবহার করে আপনি Replication এর অবস্থা যাচাই করতে পারেন।
Read more